package com.fast.manager.base.service;

import java.util.List;

import com.fast.commons.service.BaseService;
import com.fast.commons.web.model.AjaxResponse;
import com.fast.manager.base.domain.Role;
import com.fast.manager.base.domain.User;

public interface UserService extends BaseService<User> {
	
	/**
	 * 根据账号Account查找记录
	 * @param account
	 * @return
	 */
	public User findByAccount(String account) ;
	
	/**
	 * 根据账号Account获取User对象，并关联角色
	 * @param account
	 * @return
	 */
	public User findByAccountLinkRole(String account) ;
	
	/**
	 * 添加用户角色
	 * @param user_ids
	 * @param role_ids
	 * @return
	 */
	public AjaxResponse addRoleToUserBatch(String user_ids, String role_ids) ;

	/**
	 * 批量重置用户密码
	 * @param password
	 * @param securitySalt
	 * @param user_ids
	 * @return
	 */
	public AjaxResponse resetPwdBatch(String password, String user_ids) ;
	
	/**
	 * 批量调换部门
	 * @param company_id
	 * @param dept_id
	 * @param user_ids
	 */
	public AjaxResponse changeDeptBatch(Long company_id, Long dept_id, String user_ids);
	
	/**
	 * 获取用户对应的角色
	 * @param user_id
	 * @return
	 */
	public List<Role> getUserRoles(Long user_id) ;
	
	
	
	
	
	
	/**
	 * 根据账号和密码查询记录
	 * @param account
	 * @param password
	 * @return
	 */
	public AjaxResponse login(String account, String password) ;

	/**
	 * 1
	 * 找回密码，生成找回密码的数字签名链接地址，并发送到邮箱
	 * 数字签名（id+email+datetime+随机秘钥）
	 * @param email
	 * @return
	 */
	public AjaxResponse iforgotPassword(String email);
	
	/**
	 * 2
	 * 检查找回密码的链接地址是否正确
	 * @param digitalSignature 数字签名
	 * @return
	 */
	public AjaxResponse iforgotCheckLink(String digitalSignature);

	/**
	 * 3
	 * 密码找回的重设密码
	 * @param digitalSignature 数字签名
	 * @param newPassword 新密码
	 * @return
	 */
	public AjaxResponse iforgotByResetPassword(Long id, String newPassword);
}
